package com.dlc.shop.seckill.common.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dlc.shop.seckill.common.model.SeckillSku;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 秒杀活动sku
 *
 * @author LGH
 * @date 2019-08-28 09:36:59
 */
public interface SeckillSkuMapper extends BaseMapper<SeckillSku> {

    /**
     * 根据秒杀活动skuid获取秒杀活动sku
     * @param seckillSkuId
     * @return
     */
    SeckillSku getBySeckillSkuId(Long seckillSkuId);

    /**
     * 修改库存
     *
     * @param seckillSkuId
     * @param prodCount
     * @return
     */
    int updateStocks(@Param("seckillSkuId") Long seckillSkuId, @Param("prodCount") Integer prodCount);

    /**
     * 加库存
     *
     * @param seckillSkuId
     * @param countNum
     */
    void addInventory(@Param("seckillSkuId") Long seckillSkuId, @Param("countNum") Integer countNum);

    /**
     * 获取秒杀最低原价
     *
     * @param seckillIds
     * @return
     */
    List<SeckillSku> listSeckillMinOriginalPrice(@Param("seckillIds") List<Long> seckillIds);

    /**
     * 更新秒杀商品sku库存
     * @param seckillSkuId 秒杀商品skuId
     * @param changeStock 库存变化量
     */
    void updateSeckillSkuStocks(@Param("seckillSkuId") Long seckillSkuId,
                                @Param("changeStock") Integer changeStock);

    /**
     * 获取需要库存落库的活动
     * @return
     */
    List<SeckillSku> listMaybeNeedStockPlacementActivity();

    /**
     * 获取刚刚结束活动的秒杀商品（1小时内）
     * @return
     */
    List<SeckillSku> listOverJustNow();
}
